#include <iostream>
#include <vector>
#include <cassert>

using namespace std;

// 11 盛最多的水的容器
// 给出一个非负整数数组a1, a2,a3,...,an,每个整数表示一个竖立在坐标轴x位置的一堵高度为ai的“墙”，
// 选择两堵墙，和x轴构成的容器可以容纳最多的水。
// https://leetcode.cn/problems/container-with-most-water/

class Solution {
public:
    int maxArea(vector<int>& height) {
        assert(height.size() >= 2);

        int l = 0, r = height.size() - 1;
        int area = 0;
        while(l < r) {
            area = max(area, min(height[l], height[r]) * (r - l));
            if(height[l] < height[r])
                l++;
            else
                r--;
        }
        return area;
    }
};

int main() {
    vector<int> nums1 = {1, 1};
    cout << Solution().maxArea(nums1) << endl;
    vector<int> nums2 = {1,8,6,2,5,4,8,3,7};
    cout << Solution().maxArea(nums2) << endl;
    return 0;
}
